package io.gitee.sfch.chunmi.entity;

import lombok.Data;

/**
 * 分页参数，定义用于前端传入的分页参数定义
 * <p></p>
 * 当引入了chunmi-spring-boot-starter-pageable时，spring-boot将允许直接在控制层方法上添加分页参数，
 * 无需在每个参数类中都重复定义分页信息，使用例子：
 * <blockquote><pre>
 *  GetMapping("/findPage")
 *  public SomeResponse findPage(SomeRequest request, Pageable pageable) {
 *    //...
 *  }
 *  </pre></blockquote><p>
 * 注意：前端需要通过URL形式传入分页参数，才能识别：
 * <blockquote><pre>
 *  ?pageNumber=1&pageSize=10
 *  </pre></blockquote><p>
 */
@Data
public class Pageable {

    /**
     * 当前页码，从1开始
     */
    private long pageNumber;
    /**
     * 分页大小
     */
    private long pageSize;

    /**
     * {@link Pageable} 构建器
     *
     * @param pageNumber 获取当前页码
     * @param pageSize 获取分页大小
     */
    public static Pageable of(long pageNumber, long pageSize) {
        Pageable pageable = new Pageable();
        pageable.setPageNumber(pageNumber);
        pageable.setPageSize(pageSize);
        return pageable;
    }
}